/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package sv.com.intesal.compra.controlador;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import sv.com.intesal.clases.Mensaje;
import sv.com.intesal.compra.bean.Empresa;
import sv.com.intesal.compra.sql.SQLEmpresa;
import sv.com.intesal.conexion.cConexion;

/**
 *
 * @author JM
 */
public class EmpresaControlador {

    public List<Empresa> fillComboBox() throws Exception {
        List<Empresa> list = new ArrayList<Empresa>();
        try {
            ResultSet rs = cConexion.conectar().prepareStatement(SQLEmpresa.BuscarEmpresaCombo).executeQuery();
            while (rs.next()) {
                Empresa e = new Empresa();
                e.setId_em(rs.getInt("id_em"));
                e.setNombre_em(rs.getString("nombre_em"));
                list.add(e);
            }
            rs.close();
            return list;
        } catch (Exception e) {
            throw new Exception(e);
        }
    }

    public List<Empresa> fillGrid() throws Exception {

        List<Empresa> list = new ArrayList<Empresa>();
        try {
            ResultSet rs = cConexion.conectar().prepareStatement(SQLEmpresa.buscarEmpresa).executeQuery();
            while (rs.next()) {
                Empresa e = new Empresa();
                e.setId_em(rs.getInt("id_em"));
                e.setNombre_em(rs.getString("nombre_em"));
                e.setDireccion_em(rs.getString("direccion_em"));
                e.setNrc_em(rs.getString("nrc_em"));
                e.setNit_em(rs.getString("nit_em"));
                e.setGiro_em(rs.getString("giro_em"));
                e.setEmail_em(rs.getString("email_em"));
                list.add(e);
            }
            rs.close();
            return list;
        } catch (Exception ex) {
            throw new Exception(ex);
        }
    }

    public void mantenimientoEmpresa(Empresa empresa) throws Exception {

        PreparedStatement ps = null;
        Connection cnn = null;
        try {
            cnn = cConexion.conectar();
            if (empresa.getId_em() == null) {
                ps = cnn.prepareStatement(SQLEmpresa.insertEmpresa);
            } else {
                ps = cnn.prepareStatement(SQLEmpresa.updateEmpresa);
                ps.setInt(7, empresa.getId_em());
            }
            ps.setString(1, empresa.getNombre_em());
            ps.setString(2, empresa.getDireccion_em());
            ps.setString(3, empresa.getNrc_em());
            ps.setString(4, empresa.getGiro_em());
            ps.setString(5, empresa.getNit_em());
            ps.setString(6, empresa.getEmail_em());
            ps.executeUpdate();

            ps.close();
            cnn.close();

            Mensaje m = new Mensaje();
            if (empresa.getId_em() == null) {
                m.message(m.getIinformation());
            } else {
                m.message(m.getImodificada());
            }
        } catch (Exception ex) {
            throw new Exception(ex);
        }
    }

    public Empresa getEmpresa(Integer codigo_em) throws Exception {
        try {

            PreparedStatement ps = cConexion.conectar().prepareStatement(SQLEmpresa.getEmpresa);
            ps.setInt(1, codigo_em);
            ResultSet rs = ps.executeQuery();

            Empresa e = new Empresa();
            while (rs.next()) {
                e.setId_em(rs.getInt("id_em"));
                e.setNombre_em(rs.getString("nombre_em"));
                e.setDireccion_em(rs.getString("direccion_em"));
                e.setNrc_em(rs.getString("nrc_em"));
                e.setNit_em(rs.getString("nit_em"));
                e.setGiro_em(rs.getString("giro_em"));
                e.setEmail_em(rs.getString("email_em"));
            }
            return e;
        } catch (Exception e) {
            throw new Exception(e);
        }
    }
}